<?php
/**
 * Created by PhpStorm.
 * User: zhenghao
 * Date: 2015/6/18
 * Time: 10:13
 */

require_once __DIR__."/nusoaplib/nusoap.php";


/**
 * Class SmsClient 短信发送工具类.短信服务提供商:亿美
 */
class SmsClient {

    /**
     * 网关地址
     */
    var $url ='http://sdk229ws.eucp.b2m.cn:8080/sdk/SDKService';

    /**
     * 序列号,请通过亿美销售人员获取
     */
    var $serialNumber = '9SDK-EMY-0229-JDRUO';

    /**
     * 密码,请通过亿美销售人员获取
     */
    var $password = '159161';

    /**
     * 登录后所持有的SESSION KEY，即可通过login方法时创建
     */
    var $sessionKey ='123456';

//    var $sessionKey;

    /**
     * webservice客户端
     */
    var $soap;

    /**
     * 默认命名空间
     */
    var $namespace = 'http://sdkhttp.eucp.b2m.cn/';

    /**
     * 往外发送的内容的编码,默认为 UTF-8
     */
    var $outgoingEncoding = "UTF-8";

    /**
     * 往外发送的内容的编码,默认为 UTF-8
     */
    var $incomingEncoding = 'UTF-8';


    //初始化必要参数
    function __construct()
    {

        /**
         * @param string $proxyhost		可选，代理服务器地址，默认为 false ,则不使用代理服务器
         * @param string $proxyport		可选，代理服务器端口，默认为 false
         * @param string $proxyusername	可选，代理服务器用户名，默认为 false
         * @param string $proxypassword	可选，代理服务器密码，默认为 false
         * @param string $timeout		连接超时时间，默认0，为不超时
         * @param string $response_timeout		信息返回超时时间，默认30
         */
        $proxyhost = false;
        $proxyport = false;
        $proxyusername = false;
        $proxypassword = false;
        $timeout = 0;
        $response_timeout = 30;

        /**
         * 初始化 webservice 客户端
         */
        $this->soap = new nusoap_client($this->url,false,$proxyhost,$proxyport,$proxyusername,$proxypassword,$timeout,$response_timeout);

        $this->soap->soap_defencoding = $this->outgoingEncoding;
        $this->soap->decode_utf8 = false;

    }


    /**
     * @param $phone
     * @param $content
     */
    function sendSms($mobiles=array(),$content){

        //定时发送时间，格式为 yyyymmddHHiiss, 即为 年年年年月月日日时时分分秒秒,例如:20090504111010 代表2009年5月4日 11时10分10秒
        //如果不需要定时发送，请为'' (默认)
        $sendTime='';

        //扩展号, 默认为 ''
        $addSerial="";

        //内容字符集, 默认GBK
        $charset="UTF-8";

        //优先级, 默认5
        $priority=5;

        //信息序列ID(唯一的正整数)
        $smsId="8888";

        $params = array('arg0'=>$this->serialNumber,'arg1'=>$this->sessionKey,
            'arg2'=>$sendTime,'arg4'=>$content,'arg5'=>$addSerial,
            'arg6'=>$charset,'arg7'=>$priority,'arg8'=>$smsId
        );

        /**
         * 多个号码发送的xml内容格式是
         * <arg3>159xxxxxxxx</arg3>
         * <arg3>159xxxxxxx2</arg3>
         * ....
         * 所以需要下面的单独处理
         *
         */

        foreach($mobiles as $mobile){

            array_push($params,new soapval("arg3",false,$mobile));
        }

        $result = $this->soap->call("sendSMS",$params,$this->namespace);

        return $result;

    }


    /**
     *
     * 指定一个 session key 并 进行登录操作
     *
     * @param string $sessionKey 指定一个session key
     * @return int 操作结果状态码
     *
     * 代码如:
     *
     * $sessionKey = $client->generateKey(); //产生随机6位数 session key
     *
     * if ($client->login($sessionKey)==0)
     * {
     * 	 //登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
     * }else{
     * 	 //登录失败处理
     * }
     *
     *
     */
    function login($sessionKey='')
    {
        if ($sessionKey!='')
        {
            $this->sessionKey = $sessionKey;
        }

        $params = array('arg0'=>$this->serialNumber,'arg1'=>$this->sessionKey, 'arg2'=>$this->password);

        $result = $this->soap->call("registEx",$params,	$this->namespace);

        return $result;
    }




}